package tur.br.moradadosol.view.action;

import java.util.Calendar;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import tur.br.moradadosol.control.HospedagemControl;
import tur.br.moradadosol.control.UserAutentication;
import tur.br.moradadosol.util.Util;
import tur.br.moradadosol.view.form.GradeDisponibilidadeForm;

public class GradeDisponibilidadeAction extends Action {

	public ActionForward execute(
			ActionMapping mapping, 
			ActionForm actionForm,
			HttpServletRequest request, 
			HttpServletResponse response)
			throws Exception {

		HttpSession session = request.getSession();

		if(!UserAutentication.isUserAutenticated(session)) {
			return mapping.findForward("login");
		}
		
		GradeDisponibilidadeForm form = (GradeDisponibilidadeForm)actionForm;
		
		if(form.getInicio() == null) {
			Calendar inicio = Calendar.getInstance();
			
			inicio.set(Calendar.DAY_OF_MONTH, inicio.get(
					Calendar.DAY_OF_MONTH));
			Calendar fim = Calendar.getInstance();
			
			fim.set(Calendar.DAY_OF_MONTH, fim.get(Calendar.DAY_OF_MONTH) 
					+ 30);
			
			form.setInicio(inicio);
			form.setFim(fim);
		}
		
		HospedagemControl hospedagemControl = new HospedagemControl();
		
		if(form.getProximo().length() > 0) {
			
			Calendar inicio = form.getInicio();
			inicio.set(Calendar.DAY_OF_MONTH, inicio.get(Calendar.DAY_OF_MONTH) 
					+ 15);
			
			Calendar fim = form.getFim();
			fim.set(Calendar.DAY_OF_MONTH, fim.get(Calendar.DAY_OF_MONTH) 
					+ 15);
			
			form.setInicio(inicio);
			form.setFim(fim);
		}
		else if(form.getAnterior().length() > 0) {

			Calendar inicio = form.getInicio();
			inicio.set(Calendar.DAY_OF_MONTH, inicio.get(Calendar.DAY_OF_MONTH) 
					- 15);
			
			Calendar fim = form.getFim();
			fim.set(Calendar.DAY_OF_MONTH, fim.get(Calendar.DAY_OF_MONTH) 
					- 15);
			
			form.setInicio(inicio);
			form.setFim(fim);
		}
		else if(form.getPesquisar().length() > 0) {

			Calendar inicio = Util.getDate(form.getInicioPesquisa());
			
			Calendar fim = (Calendar)inicio.clone();
			fim.set(Calendar.DAY_OF_MONTH, inicio.get(Calendar.DAY_OF_MONTH) 
					+ 30);
			
			form.setInicio(inicio);
			form.setFim(fim);
		}
		
		form.setGrade(hospedagemControl.getPlanilhaHospedagem(
				form.getInicio(), form.getFim()));
		
		return mapping.getInputForward();
	}

}
